/**
 * 8-bits 等于一字节
 * 8位 = 1字节
 * 1024字节 = 1K
 * 
 * 以前的js只需要处理字符
 * 
 * 
 * 如何实现进制转换
 *      二进制 0b
 *      八进制 0o
 *      十六进制 0x
 * 
 * 
 */
// var c = 20
// console.log(parseInt('0x10', 16))
// console.log(c.toString(2))



/**
 * Ascii
 * gb2312
 * gbk
 * utf-8
 *      是互联网使用最广泛的unicode的实现方式
 *      每次以8个位传输数据
 *      它是一种变长的编码方式
 */


// 把unicode编码 转换为 utf-8编码

 let b = parseInt(0x4E07.toString(2))

 console.log(b) // 100 111000 000111

 // 1110**** 10****** 10******
//  11100100 10111000 10000111

console.log(0b11100100.toString(16))
console.log(0b10111000.toString(16))
console.log(0b10000111.toString(16))
console.log(Buffer.from('万'))


function transfer(number){
    let arr = ['1110', '10', '10']
    let str = number.toString(2) // 100 111000 000111
    arr[2] += str.substring(str.length-6)
    arr[1] += str.substring(str.length-12, str.length-6)
    arr[0] += str.substring(0, str.length-12).padStart(4, '0')

    return arr.map(item => parseInt(item, 2).toString(16))
}

let r = transfer(0x4E07)
console.log(r)


// unicode是一种存储方式，只是一个数字对应一个字符  utf是它的一种实现方式



